Three-dimensional (3D) objects are commonly represented on computer displays in two dimensions (2D). Such computer displays allow users to view the 3D objects by rotating, translating, or zooming in and out of the displayed scenes. The rotation, translation, and zooming will be referred to generally as a user-requested action (i.e., the user-requested action as used herein refers to “motions” and does not include color/lighting changes or texture mapping changes). Most prior art 3D visualization software packages respond to the user-requested actions by moving the viewpoint (observer eyes or camera) around a 3D scene. For rotation and zooming operations, these are performed with respect to a pivot point, which is typically the point of interest (POI). The POI is either set at the center of the display by default or is selected by a user through an input device (e.g. a mouse or a keyboard). When the user selects a location on the 2D display as the POI, the viewer typically attempts to associate the POI with the closest point on the 3D object. However, due to the imperfection of mapping a 3D object onto a 2D display, the POI is often not placed on the 3D object. Such imperfection results in a separation (offset) between the POI and the 3D object. The offset is usually insignificant and unnoticeable initially. However, the offset may become apparent after rotation or zooming. As a result, the region of interest on the 3D object will be displaced to the side of the viewing area, or completely lost from the viewing area after rotation or zooming.
FIGS. 1A and 1B illustrate such a problem. In FIG. 1A, a thread-like 3D object 11 is mapped to a 2D display (a viewing window) 10. In a typical viewer, the point of interest (POI) 12 is mapped to a point on the 3D object 11 around the center of the window 10. As discussed above, due to the difficulty in mapping a 3D object 11 on to the 2D display window 10, the POI 12 is often not mapped precisely on the 3D object 11. The imprecision results in the placement of the POI 12 at a location with a small offset from the intended location on the 3D object. This offset is usually too small to be noticed in the scene (see FIG. 1A) until a zooming or rotation operation is performed on the 3D object 11. This POI 12 is the pivot point for zooming and rotation operations. FIG. 1B illustrates a scene after a zooming operation. The “small” offset in FIG. 1A is now quite obvious in FIG. 1B. As a result of this offset, the 3D object 11 is now displaced from the center and appears in the corner of the display window 10 (FIG. 1B). The same problem can also occur in a rotation operation because of the change in the viewing angle. In FIG. 1A, the POI 12 may seem to coincide with the 3D object 11. However, the coincidence might simply be due to fortuitous alignment along the line of sight, and the separation between the POI 12 and the 3D object 11 may become noticeable upon rotation. If this happens, the 3D object 11 will be displaced to the side of the viewing window 10 like that shown in FIG. 1B. To bring the 3D object 11 back to the center of the window 10, the user typically needs to perform a translation operation. This extra step can be annoying and time consuming, especially when frequent zoom and rotation operations are performed on the 3D object.
U.S. Pat. No. 5,276,785 issued to MacKinlay et al. discloses a method to reduce this problem. In this method, when a user moves the POI, a circle or other shape on the object's surface is presented to assist the user in positioning the POI. This method reduces the possibility that the POI will be placed outside of the 3D object. In a related approach, U.S. Pat. No. 5,798,761 issued to Isaacs discloses methods for mapping 2D cursor motion onto 3D scenes by employing auxiliary 3D lines and planes as guides. However, these guide lines and planes do not always map the cursors onto the 3D object.
The problem illustrated in FIG. 1B is exacerbated if the 3D object has disproportionate dimensions, i.e., with one dimension much larger than the other dimensions (such as a thread-like object, see 11 in FIG. 1A). Such thread-like 3D objects may include oil-well trajectories, pipelines, pipeline networks, road networks in 3D (maps in relief), deoxyribonucleotides (DNA) molecules, ribonucleotides (RNA) molecules, to name a few. For example, an oil-well trajectory may have a length of up to a mile or more and a diameter of one foot or less. The trajectory is typically represented as a succession of cylinders, connected together and oriented according to the deviation and azimuth of the well so that it forms a long and thin cylinder. In order to locate and observe a small area in detail, a user needs to zoom in and zoom out of the scene often, and the problem illustrated in FIG. 1B will occur frequently using the existing display tools.
Another issue is that most display tools perform the user-requested operations with the same amounts of motion regardless of how close or how far away the viewer is to the object. This mode of operation makes it difficult to move the viewpoint accurately in the neighborhood of the object while having a reasonable speed of response when far from it. U.S. Pat. No. 5,513,303 issued to Robertson et al. discloses a two-phase motion. In the first phase, the movement is gradually accelerated as the duration of the motion increases. In the second phase, the movement follows an asymptotic path. Similarly, U.S. Pat. No. 5,276,785 issued to Mackinlay et al. discloses methods using asymptotic or logarithmic motion functions to provide variable rate of motion.
It is desirable that a display tool for viewing a 3D object be able to maintain the point of interest on the object, with the 3D object preferably remaining at the center of the window and providing navigation in the 3D scene that is responsive to the degree of magnification.